1 using System;
2 using
UnityEngine;
3 using
UnityEngine.Rendering;
4
5 namespace
ProceduralToolkit
6 {
7     
public static class GLE
8     {
9         
public static readonly Material wireMaterial;
10
11         
private static readonly Action<Vector3, Vector3> drawLine;
12
13         
static GLE()
14         {
15             
var shader = Shader.Find("Hidden/Internal-Colored");
16             wireMaterial =
new Material(shader) {hideFlags = HideFlags.HideAndDontSave};
17             wireMaterial.SetInt(
"_SrcBlend", (int) BlendMode.SrcAlpha);
18             wireMaterial.SetInt(
"_DstBlend", (int) BlendMode.OneMinusSrcAlpha);
19             wireMaterial.SetInt(
"_Cull", (int) CullMode.Off);
20             wireMaterial.SetInt(
"_ZWrite", 0);
21
22             drawLine = DrawLine;
23         }
24
25         
public static void DrawLine(Vector3 from, Vector3 to)
26         {
27             GL.Vertex(
from);
28             GL.Vertex(to);
29         }
30
31         
public static void DrawRay(Ray ray)
32         {
33             Draw.WireRay(drawLine, ray);
34         }
35
36         
public static void DrawWireQuadXY(Vector3 position, Quaternion rotation, Vector2 scale)
37         {
38             Draw.WireQuadXY(drawLine, position, rotation, scale);
39         }
40
41         
public static void DrawWireQuadXZ(Vector3 position, Quaternion rotation, Vector2 scale)
42         {
43             Draw.WireQuadXZ(drawLine, position, rotation, scale);
44         }
45
46         
public static void DrawWireQuadYZ(Vector3 position, Quaternion rotation, Vector2 scale)
47         {
48             Draw.WireQuadYZ(drawLine, position, rotation, scale);
49         }
50
51         
public static void DrawWireCube(Vector3 position, Quaternion rotation, Vector3 scale)
52         {
53             Draw.WireCube(drawLine, position, rotation, scale);
54         }
55
56         
#region DrawWireCircle
57
58         
public static void DrawWireCircleXY(Vector3 position, float radius)
59         {
60             Draw.WireCircleXY(drawLine, position, radius);
61         }
62
63         
public static void DrawWireCircleXY(Vector3 position, Quaternion rotation, float radius)
64         {
65             Draw.WireCircleXY(drawLine, position, rotation, radius);
66         }
67
68         
public static void DrawWireCircleXZ(Vector3 position, float radius)
69         {
70             Draw.WireCircleXZ(drawLine, position, radius);
71         }
72
73         
public static void DrawWireCircleXZ(Vector3 position, Quaternion rotation, float radius)
74         {
75             Draw.WireCircleXZ(drawLine, position, rotation, radius);
76         }
77
78         
public static void DrawWireCircleYZ(Vector3 position, float radius)
79         {
80             Draw.WireCircleYZ(drawLine, position, radius);
81         }
82
83         
public static void DrawWireCircleYZ(Vector3 position, Quaternion rotation, float radius)
84         {
85             Draw.WireCircleYZ(drawLine, position, rotation, radius);
86         }
87
88         
#endregion DrawWireCircle
89
90         
#region DrawWireArc
91
92         
public static void DrawWireArcXY(Vector3 position, float radius, float fromAngle, float toAngle)
93         {
94             Draw.WireArcXY(drawLine, position, radius, fromAngle, toAngle);
95         }
96
97         
public static void DrawWireArcXY(Vector3 position, Quaternion rotation, float radius, float fromAngle,
98             
float toAngle)
99         {
100             Draw.WireArcXY(drawLine, position, rotation, radius, fromAngle, toAngle);
101         }
102
103         
public static void DrawWireArcXZ(Vector3 position, float radius, float fromAngle, float toAngle)
104         {
105             Draw.WireArcXZ(drawLine, position, radius, fromAngle, toAngle);
106         }
107
108         
public static void DrawWireArcXZ(Vector3 position, Quaternion rotation, float radius, float fromAngle,
109             
float toAngle)
110         {
111             Draw.WireArcXZ(drawLine, position, rotation, radius, fromAngle, toAngle);
112         }
113
114         
public static void DrawWireArcYZ(Vector3 position, float radius, float fromAngle, float toAngle)
115         {
116             Draw.WireArcYZ(drawLine, position, radius, fromAngle, toAngle);
117         }
118
119         
public static void DrawWireArcYZ(Vector3 position, Quaternion rotation, float radius, float fromAngle,
120             
float toAngle)
121         {
122             Draw.WireArcYZ(drawLine, position, rotation, radius, fromAngle, toAngle);
123         }
124
125         
#endregion DrawWireArc
126
127         
public static void DrawWireSphere(Vector3 position, Quaternion rotation, float radius)
128         {
129             Draw.WireSphere(drawLine, position, rotation, radius);
130         }
131
132         
public static void DrawWireHemisphere(Vector3 position, Quaternion rotation, float radius)
133         {
134             Draw.WireHemisphere(drawLine, position, rotation, radius);
135         }
136
137         
public static void DrawWireCone(Vector3 position, Quaternion rotation, float apexRadius, float angle,
138             
float length)
139         {
140             Draw.WireCone(drawLine, position, rotation, apexRadius, angle, length);
141         }
142     }
143 }


Gõ tìm kiếm nhanh...